#ifndef __GAZELL_PARAMS_CFG_H_
#define __GAZELL_PARAMS_CFG_H_

#include "gzll.h"

#define GZLL_DEVICE_ONLY

// 设置默认跳频频道,配置使用默认的跳频表进行跳频
#define GZLL_DEFAULT_CHANNEL_TAB                                    {2, 32, 70, 5, 35, 68, 8, 39, 65, 11, 41, 62}
#define GZLL_DEFAULT_CHANNEL_TAB_SIZE                               12
// 设置初始通道地址，地址可以通过对码进行改变。配对使用默认地址进行配对
#define GZLL_DEFAULT_ADDRESS_PIPE0                                  {1, 3, 6, 9, 12}
// 设置设备模式
#define GZLL_DEFAULT_PARAM_DEVICE_MODE                              GZLL_DEVICE_MODE_0
// 设置设备发送数据超时，超时是指超时次数
#define GZLL_DEFAULT_PARAM_TX_TIMEOUT                               1
// 设置设备发送时，如果是同步状态，每个频道重发次数
#define GZLL_DEFAULT_PARAM_TX_ATTEMPTS_PR_CHANNEL_WHEN_SYNC_ON      2
// 设置设备发送时，如果是不同步状态，每个频道重发次数
#define GZLL_DEFAULT_PARAM_TX_ATTEMPTS_PR_CHANNEL_WHEN_SYNC_OFF     (GZLL_DEFAULT_CHANNEL_TAB_SIZE * 7)         /*<异步重传计数器*/

// 设置主机模式
#define GZLL_DEFAULT_PARAM_HOST_MODE                                GZLL_HOST_MODE_0
// 设置主机接收通道,默认是使能全部的通道,也可以根据需求设置
#define GZLL_DEFAULT_PARAM_RX_PIPES                                 0x3f
// 设置加密通道，默认不对数据进行加密
#define GZLL_DEFAULT_PARAM_CRYPT_PIPES                              0x00
// 设置主机接收超时，超时后自动进入IDLE模式，默认设置为0，不超时，一直处于接收状态
#define GZLL_DEFAULT_PARAM_RX_TIMEOUT                               0
// 设置主机接收中断时间，时基为us
#define GZLL_DEFAULT_PARAM_RX_PERIOD                                1008
// 设置主机接收频道保持时间
#define GZLL_DEFAULT_PARAM_RX_CHANNEL_HOLD_PERIODS                  2
// 设置输出功率
#define GZLL_DEFAULT_PARAM_OUTPUT_POWER                             HAL_NRF_0DBM
// 设置IDLE模式下后关闭nrf电源,默认不关闭
#define GZLL_DEFAULT_PARAM_POWER_DOWN_IDLE_ENABLE                   0
// 设置同步周期，在设备在半同步模式下才有作用
#define GZLL_DEFAULT_PARAM_MAX_SYNC_PERIOD                          150
// 设置主机低功能处理周期，对于低延时模式没有作用
#define GZLL_DEFAULT_PARAM_HOST_MODE_1_CYCLE_PERIOD                 100
// 设置频道切换超时次数,超过后才会进行跳频
#define GZLL_DEFAULT_PARAM_COLLISION_CHANNEL_SWITCH_LIMIT           20
// 设置传输速率
#define GZLL_DATARATE                                               GZLL_DR_2MBPS
// 设置最大载荷长度
#define GZLL_MAX_FW_PAYLOAD_LENGTH                                  7//27
// 设置最大ACK载荷长度
#define GZLL_MAX_ACK_PAYLOAD_LENGTH                                 10

#define GZLL_DEFAULT_PARAM_RX_PERIOD_MODIFIER                       360
// 最大频道列表大小
#define GZLL_MAX_CHANNEL_TAB_SIZE                                   12

////////////////////////////////////////////////////////////////////////////////////////////////
// 配对协议配置
///////////////////////////////////////////////////////////////////////////////////////////////

// 频道选择，根据各国的标准进行选择，每个国家的选择标准不一致，现在按美国的标准进行设置
#define GZP_CHANNEL_LOW                                             2
#define GZP_CHANNEL_HIGH                                            79
#define GZP_CHANNEL_MIN                                             2
#define GZP_CHANNEL_MAX                                             80
#define GZP_CHANNEL_SPACING_MIN                                     5
// 配对的功率选择，配对时，一般要调小功率防止配对配错,-12db测试距离在2m内
#define GZP_POWER                                                   HAL_NRF_0DBM
// 设备发送配对请求超时
#define GZP_REQ_TX_TIMEOUT                                          200
// 主机能量检测超时
#define GZP_CLOSE_PROXIMITY_BACKOFF_RX_TIMEOUT                      ((GZP_REQ_TX_TIMEOUT / 2) + 50)
// 通讯距离检测包，主要是为了主机获取能量标志
#define GZP_MAX_BACKOFF_PACKETS                                     100
// 设备等待ACK超时
#define GZP_TX_ACK_WAIT_TIMEOUT                                     (GZP_CLOSE_PROXIMITY_BACKOFF_RX_TIMEOUT + 50)
// 主机接收超时
#define GZP_STEP1_RX_TIMEOUT                                        (((GZP_REQ_TX_TIMEOUT / 2) + GZP_TX_ACK_WAIT_TIMEOUT) + 50)
// 没有检测能力超时
#define GZP_NOT_PROXIMITY_BACKOFF_RX_TIMEOUT                        (GZP_CLOSE_PROXIMITY_BACKOFF_RX_TIMEOUT + GZP_STEP1_RX_TIMEOUT)


#endif
